/**
 *  @file representation.h
 *
 *  @date 16-nov-2009
 *  @author Ives van der Flaas
 */

#ifndef REPRESENTATION_H_
#define REPRESENTATION_H_

#include "vector2.h"

namespace si
{

/**
 * This class represents an abstract representation of a game object.
 * There are different kinds of representations -- static representations (ie sprites)
 * and multistate representations.
 */
class Representation
{
public:
	virtual void update(double time) = 0;
	virtual void draw(si::Vector2 virtualPosition, si::Vector2 virtualSize) = 0;
	virtual Vector2 getSize() const = 0;

	Vector2 getPosition() const { return fPosition; }
	void setUpperLeftPosition(Vector2 position){ fPosition = position; }
	void setCenterPosition(Vector2 position);
protected:
	Vector2 fPosition;
};

}

#endif /* REPRESENTATION_H_ */
